Some application services provide the ability to interactively “stream” mobile software applications (more simply “applications” or “apps”) to mobile devices such as smart phones, tablet computers, vehicle computing systems, wearable devices (e.g., smart watches), etc. This allows a user to operate the application, e.g., for a trial period, without actually installing the application locally on the mobile device. In some instances, application streaming may be accomplished by installing the application on a virtual machine operated by one or more servers (e.g., collectively forming a so-called “cloud”). One or more input/output (“I/O”) streams may be established between the virtual machine and the mobile device. The one or more I/O streams may provide various modalities of input data received at the mobile device to the virtual machine, and likewise may provide various modalities of output data generated by the application from the virtual machine to the mobile device.
Some applications may depend on input provided by hardware components (or provided by device drivers associated therewith) that are relatively unique to mobile devices, such as position coordinate sensors (e.g., global positioning system, or “GPS”), cellular communication interfaces, accelerometers (e.g., to control gameplay), cameras, and so forth. However, for a variety of reasons these signals may be unavailable and/or incompatible with the software application. For example, a camera may be disabled due to insufficient battery level, a fingerprint sensor may be unavailable because of damage to the sensor, a user may disable GPS functionality on his or her phone for privacy reasons, or a user may be located in a geographic location that fails to satisfy one or more geographic criteria imposed by the application. Additionally or alternatively, and again for a variety of reasons, users may wish to alter or otherwise replace signals provided by hardware components of their mobile devices.